package writtenTraining.day12;

import java.util.*;

/**
 * day12:(1)模拟+哈希：OR63 删除公共字符
 */
public class Main {
    public static void main(String[] args) {
        // 模拟 + 哈希

        // 输入结果
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String deleteStr = in.nextLine();

        // 哈希统计
        boolean[] hash = new boolean[300];
        for(char ch: deleteStr.toCharArray()) {
            hash[ch] = true;
        }

        StringBuilder ret = new StringBuilder();
        for(char ch : str.toCharArray()) {
            // 如果出现就跳过此处字符加入
            if(hash[ch]) {
                continue;
            }
            ret.append(ch);
        }
        
        // 输出结果
        System.out.println(ret.toString());
    }
}


/**
 * day12:(2)模拟：JZ52 两个链表的第一个公共结点
 */

class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

 class Solution1 {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        // 模拟

        //1. 分别计算两个链表的长度
        // 链表一的长度
        ListNode cur = pHead1;
        int count1 = 0;
        while(cur != null) {
            count1++;
            cur = cur.next;
        }

        // 链表二的长度
        cur = pHead2;
        int count2 = 0;
        while(cur != null) {
            count2++;
            cur = cur.next;
        }

        ListNode cur1 = pHead1, cur2 = pHead2;
        // 把长的链表先进行遍历
        if(count1 > count2) {
            for(int i = 0; i < count1 - count2; i++) {
                cur1 = cur1.next;
            }
        } else {
            for(int i = 0; i < count2 - count1; i++) {
                cur2 = cur2.next;
            }
        }

        // 同时遍历，如果两个结点相同就跳出
        while(cur1 != cur2) {
            cur1 = cur1.next;
            cur2 = cur2.next;
        }

        return cur1;
    }
}

/**
 * day12:(3)动态规划思想：mari和shiny
 */


 class Main2 {
    public static void main(String[] args) {
//         动态规划思想，多个状态表示

        // 输入数据
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String str = in.next();

//         创建dp
        long[] dp = new long[3];
        //  初始化
        //  填表
        for(int i = 0; i < n; i++) {
            char ch = str.charAt(i);
            if(ch == 's') {
//                 s 的个数++
                dp[0]++;
            } else if(ch == 'h') {
//                看前面 s 的个数
                dp[1] += dp[0];
            } else if( ch == 'y') {
//                看前面 sh 的个数
                dp[2] += dp[1];
            }
        }
        //  返回值
        System.out.println( dp[2]);
    }
}